# -*- coding: utf-8 -*-
"""
@Time ： 2021/11/30 21:14
@Auth ： Mr. William 1052949192
@Company ：特斯汀学院 @testingedu.com.cn
@Function ：请输入模块功能描述
"""
import os

import allure
import pytest

from keywords.webkeys import Web

cases = [[
    ['', '登录失败', '', ' ', '', '', '', '', ''],
    ['', '', '打开浏览器', 'openbrowser', '', '', '', '', ''],
    ['', '', '进入登录页面', 'geturl', 'http://testingedu.com.cn:8000/index.php/Home/user/login.html', '', '', '', ''],
    ['', '', '输入用户名', 'input', '//*[@id="username"]', '13800138006', '', '', ''],
    ['', '', '输入密码', 'input', '//*[@id="password"]', '1234561', '', '', ''],
    ['', '', '输入验证码', 'input', '//*[@id="verify_code"]', '11111', '', '', ''],
    ['', '', '点击登录', 'click', '//*[@id="loginform"]/div/div[6]/a', '', '', '', ''],
    ['', '', '等待', 'sleep', '1', '', '', '', ''],
    ['', '', '获取提示', 'gettext', '//*[@id="layui-layer1"]/div[2]', '', '', '', ''],
], [
    ['', '邮箱登录', '', ' ', '', '', '', '', ''],
    ['', '', '进入登录页面', 'geturl', 'http://testingedu.com.cn:8000/index.php/Home/user/login.html', '', '', '', ''],
    ['', '', '输入用户名', 'input', '//*[@id="username"]', '13800138006', '', '', ''],
    ['', '', '输入密码', 'input', '//*[@id="password"]', '123456', '', '', ''],
    ['', '', '输入验证码', 'input', '//*[@id="verify_code"]', '11111', '', '', ''],
    ['', '', '点击登录', 'click', '//*[@id="loginform"]/div/div[6]/a', '', '', '', ''],
    ['', '', '等待', 'sleep', '1', '', '', '', ''],
    ['', '', '点击登录', 'click', '//a[text()="安全退出"]', '', '', '', ''],
], [
    ['', '手机号成功', '', ' ', '', '', '', '', ''],
    ['', '', '进入登录页面', 'geturl', 'http://testingedu.com.cn:8000/index.php/Home/user/login.html', '', '', '', ''],
    ['', '', '输入用户名', 'input', '//*[@id="username"]', '13800138006', '', '', ''],
    ['', '', '输入密码', 'input', '//*[@id="password"]', '123456', '', '', ''],
    ['', '', '输入验证码', 'input', '//*[@id="verify_code"]', '11111', '', '', ''],
    ['', '', '点击登录', 'click', '//*[@id="loginform"]/div/div[6]/a', '', '', '', ''],
    ['', '', '等待', 'sleep', '1', '', '', '', '']
]
]
# 初始化关键字对象
web = Web()


class Test_Web:
    """Web自动化的测试类"""

    # 步骤执行，加上注解可以看到函数的名字和参数
    @allure.step
    def run_step(self,func,params):
        """使用allure步骤执行"""
        func(*params)

    @pytest.mark.parametrize('steps', cases)
    def test_case(self, steps):
        """测试用例"""
        print(steps)
        print()
        info = steps[0]
        # 指定用例名字
        allure.dynamic.title(info[1])
        for i in range(len(steps)):
            line = steps[i]
            # 分组信息，不执行
            if len(line[0]) > 1 or len(line[1]) > 1:
                pass
            else:
                # 反射执行
                func = getattr(web, line[3])
                # 截取参数
                params = line[4:]
                # 去掉空的
                params = params[0:params.index('')]
                print(params)
                # 显示步骤
                with allure.step(line[2]):
                    self.run_step(func,params)


# 只有用python运行这个py文件，才会执行if里面代码
if __name__ == '__main__':
    pytest.main(['-s', "ddt_runner.py",'--alluredir','./result'])
    # allure generate ./result -o ./report --clean
    # 用allure生成报告，从结果（result）目录，生成报告到（report）目录
    # --clean（先清空，然后重新生成）
    os.system('allure generate ./result -o ./report --clean')
